//---------------------------------------------------------------------------

#include <string>
#include <QString>
#include "ItemOpc.h"


QString ItemOpc::toString()
{
    SYSTEMTIME st;
    QString s;
    memset(&st, 0, sizeof(SYSTEMTIME));
    char tmp[100];
    switch(dadoItem.vt)
    {
    case VT_I2:
        s = QString("f4 %1")
            .arg(dadoItem.iVal);
        break;
    case VT_I4:
        s = QString("f3 %1")
            .arg(dadoItem.lVal);
        break;
    case VT_R4:
        s = QString("f2 %1")
            .arg(dadoItem.fltVal);
        break;
    case VT_R8:
        s = QString("f1 %1")
            .arg(dadoItem.dblVal);
        break;
    case VT_BSTR:
        sprintf(tmp,"%ls", dadoItem.bstrVal);
        s = QString("%1")
            .arg(tmp);
        break;
    case VT_DATE:
        VariantTimeToSystemTime(dadoItem.date,&st);
        s = QString("Dia: %1 Mes %2 Ano %3 Hora %4 Minuto %5 Segundo %6")
            .arg(st.wDay).arg(st.wMonth).arg(st.wYear).arg(st.wHour).arg(st.wMinute).arg(st.wSecond);
        break;
    case VT_BOOL:
        ((dadoItem.boolVal == 1) ? sprintf(tmp,"true"): sprintf(tmp,"false"));
        s = QString("%1")
            .arg(tmp);
        break;
    default:
        s = QString("%1 :%2")
            .arg("DADO DESCONHECIDO:").arg(dadoItem.vt);
        break;
    }
    return s;
}

double ItemOpc::toInt(){
    switch(dadoItem.vt)
    {
    case VT_I2:
        return dadoItem.iVal;
     case VT_I4:
        return dadoItem.lVal;
     case VT_R4:
        return dadoItem.fltVal;
    case VT_R8:
        return dadoItem.dblVal;
    default:
        return -1;
    }
}


//---------------------------------------------------------------------------
